package cn.zyy.jdbc;

import cn.zyy.entity.User;
import com.mysql.cj.jdbc.Driver;

import java.sql.*;
import java.util.ArrayList;

public class JDBCDemo01 {
    //psvm  快速生成主方法
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //加载驱动  1、创建驱动对象  2、注册驱动
            //快捷方式 .var快速获取对象
            Driver driver = new Driver();
            DriverManager.registerDriver(driver);
            /**  获取连接
             *   参数1：url  统一资源定位符  协议  ip  port  数据库名
             *   连接参数：jdbc:mysql://localhost:3306/java2114?serverTimezone=UTC&useSSL=true&characterEncoding=utf8
             *   参数2：用户名  root
             *   参数3：密码  123456
             */
            String url = "jdbc:mysql://localhost:3306/java2114?serverTimezone=UTC";
            //连接本地连接简写方式
            //String url = "jdbc:mysql:///java2114";
            String username = "root";
            String password = "123456";
            conn = DriverManager.getConnection(url, username, password);
            //快捷方式  sout  soutv
            System.out.println("conn = " + conn);
            //获取一个操作数据库的对象
            stmt = conn.createStatement();
            // 1、编写sql  2、发送sql
            String sql = "select * from user";
            rs = stmt.executeQuery(sql);
            //处理结果集  DQL  查询语句  rs.next()  返回结果集中是否还有下一条数据
            //创建集合  存储返回的数据 user对象
            ArrayList<User> users = new ArrayList<>();
            while(rs.next()){
                //获取每条记录中的字段值  1、通过字段名获取  2、通过列号获取
                int id = rs.getInt("id");
                //int id = rs.getInt(1);
                String uname = rs.getString(2);
                String pwd = rs.getString(3);
                int role = rs.getInt(4);
                //将获取的数据封装成user对象
                User user = new User();
                user.setId(id);
                user.setUsername(uname);
                user.setPwd(pwd);
                user.setRole(role);
                //添加数据到集合
                users.add(user);
            }
            //遍历集合  查看结果  iter 快速foreach快捷键
            for (User user : users) {
                System.out.println("user = " + user);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //释放资源(关闭连接)  一定要执行
            try {
                if (rs != null) {
                    rs.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}
